home *** CD-ROM | disk | FTP | other *** search
/ Just Call Me Internet / Just Call Me Internet.iso / prog / atari / m2 / cat3src / cat / convertd.d < prev    next >
Text File  |  1997-10-26  |  7KB  |  203 lines

  1. DEFINITION MODULE ConvertDate;
  2.  
  3. TYPE   Date = RECORD
  4.                 day  : INTEGER[1..31];
  5.                 month: INTEGER[1..12];
  6.                 year : INTEGER;
  7.               END;
  8.  
  9.        Time = RECORD
  10.                 second: [0..59];
  11.                 minute: [0..59];
  12.                 hour  : [0..23]
  13.               END;
  14.        
  15.        tWeekday = (Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday);
  16.  
  17.  
  18. PROCEDURE CurrentDate (): LONGCARD;
  19. (* Liefert das aktuelle GEMDOS-Datum im CAT-Format zurck
  20.  *)
  21.  
  22. PROCEDURE TextToDate ( s: ARRAY OF CHAR; VAR d: Date; VAR valid: BOOLEAN );
  23. (* Die eigentliche Hauptfunktion: Sie wandelt sowohl ins Datum und 
  24.  * berprft auch, ob das Datum gltig ist. Die wird auch von den 
  25.  * Funktionen DateOK und StrToDate aufgerufen.
  26.  *)
  27.  
  28. PROCEDURE StrToMTDate (str : ARRAY OF CHAR; VAR res: ARRAY OF CHAR);
  29.   (* Eingabe: String mit relativ beliebigem Format.
  30.    * Ausgabe: Datum im Maustausch-Format, Uhrzeit wird auf 0 Uhr gesetzt
  31.    *)
  32.  
  33. PROCEDURE StrToDate (str : ARRAY OF CHAR) : LONGCARD;
  34.   (* Eingabe: String mit relativ beliebigem Format.
  35.    * Ausgabe: LONGCARD mit folgenden Format:
  36.    *          jjmmddhhmm, Jahr minus 1990.
  37.    *          0000  immer, da Zeit nicht eingegeben wird.
  38.    * Anmerkung: Diese Funktion gibt nur bis 2032 das korrekte Datum
  39.    *            zurck, da danach ein šberlauf des 32-Bit Wertes
  40.    *            auftritt. Sp„testens dann ist diese Funktion bzw.
  41.    *            das Datumsformat zu berarbeiten :-)
  42.    *)
  43.  
  44. PROCEDURE DateOk (str : ARRAY OF CHAR) : BOOLEAN;
  45.   (* DateOk prft nach, ob ein Datum in einem String ein gltiges Datum ist.
  46.    * Wenn nicht, wird FALSE zurckgegeben, andernfalls ...
  47.    *)
  48.  
  49. PROCEDURE TextDateToNum (date: ARRAY OF CHAR): LONGCARD;
  50. (* Wandelt einen Datumsstring in Anzahl Tage um
  51.  *)
  52.  
  53. PROCEDURE DateInNum (date : CARDINAL): LONGCARD;
  54. (* Wandelt ein Datum im GEMDOS-Format in eine Zahl um
  55.  *)
  56.  
  57. PROCEDURE NumInDate (num : LONGCARD): CARDINAL;
  58. (* Wandelt eine Zahl in ein GEMDOS-Datum um
  59.  *)
  60.  
  61. PROCEDURE CatDate2Datim (cd: LONGCARD; VAR date: Date; VAR time: Time);
  62. (* Wandelt ein CAT-Datum in ein Datum und eine Uhrzeit um
  63.  *)
  64.  
  65. PROCEDURE UnpackDate (date: CARDINAL): Date;
  66. (* Wandelt GEMDOS-Datum in Datum um
  67.  *)
  68.  
  69. PROCEDURE PackDate (date: Date): CARDINAL;
  70. (* Wandelt Datum in GEMDOS-Datum um
  71.  *)
  72.  
  73. PROCEDURE UnpackTime (time: CARDINAL): Time;
  74. (* Wandelt GEMDOS-Zeit in Zeit um
  75.  *)
  76.  
  77. PROCEDURE PackTime (time: Time): CARDINAL;
  78. (* Wandelt Zeit in GEMDOS-Zeit um
  79.  *)
  80.  
  81. PROCEDURE DateToJulian (d : Date): LONGCARD;
  82. (* Wandelt ein Datum in eine Zahl (Tage seit 1.1.1980) um
  83.  *)
  84.  
  85. PROCEDURE WeekDay (d: Date): tWeekday;
  86. (* Liefert den aktuellen Wochentag zurck 
  87.  *)
  88.  
  89. PROCEDURE WeekEnd(d: Date): BOOLEAN;
  90. (* Liefert TRUE, wenn das Datum am Wochenende ist
  91.  *)
  92.  
  93. PROCEDURE Holiday(VAR d: Date): BOOLEAN;
  94. (* Gibt zurck, ob das Datum ein deutscher Feiertag ist
  95.  *)
  96.  
  97. PROCEDURE BussBet (year: INTEGER; VAR d: Date);
  98. (* Liefert das Datum vom Buž- und Bettag
  99.  *)
  100.  
  101. PROCEDURE KarFreitag (year: INTEGER; VAR d: Date);
  102. (* Liefert das Datum von Karfreitag
  103.  *)
  104.  
  105. PROCEDURE KarFreitagNumber (year: INTEGER) : LONGCARD;
  106. (* Liefert das Datum von Karfreitag als Zahl
  107.  * Damit kann man einige andere variable Feiertage berechnen:
  108.  *
  109.  *  Aschermittoch = Karfreitag - 44;
  110.  *  Ostersonntag = Karfreitag + 2
  111.  *  Ostermontag  = Karfreitag + 3
  112.  *  Christi Himmelfahrt  = Karfreitag + 41
  113.  *  Pfingstmontag  = Karfreitag + 52
  114.  *)
  115.  
  116. PROCEDURE TimeToText ( s: Time; REF mask: ARRAY OF CHAR; VAR t: ARRAY OF CHAR );
  117.   (*
  118.    * Wandelt die Zeit 's' in den String 't'.
  119.    * 't' muž mindestens so grož wie die bergebene Maske sein, sonst
  120.    * tritt ein Laufzeitfehler auf! (Empfohlen werden mind. 12 Zeichen!)
  121.    *
  122.    * Die Form wird durch 'mask' bestimmt:
  123.    *
  124.    *   HH: Stundenzahl ("hh" l”scht fhrende Null)
  125.    *   MM: Minutenzahl ("mm" l”scht fhrende Null)
  126.    *   SS: Sekundenzahl ("ss" l”scht fhrende Null)
  127.    *
  128.    *   #E: AM/PM-Notierung (English) ("e" schreibt "am" bzw. "pm")
  129.    *
  130.    *   Beispiele fr:            >13 Uhr 50, 5s<     >2 Uhr 50, 10s<
  131.    *    'hh:mm:ss'                '13:50:5'           '2:50:10'
  132.    *    'HH:MM:SS'                '13:50:05'          '02:50:10'
  133.    *    'hh:MM:SS'                '13:50:05'          '2:50:10'
  134.    *    'hh:MM #e'                '1:50 pm'           '2:50 am'
  135.    *    'hh Uhr mm'               '13 Uhr 5'          '2 Uhr 10'
  136.    *
  137.    * Ist 'mask' ein Leerstring, wird 'HH:SS:MM' verwendet.
  138.    *)
  139.  
  140. PROCEDURE DateToText ( s: Date; REF mask: ARRAY OF CHAR; VAR d: ARRAY OF CHAR );
  141.   (*
  142.    * Wandelt Datum 's' in String 'd'.
  143.    * 'd' muž mindestens so grož wie die bergebene Maske sein, sonst
  144.    * tritt ein Laufzeitfehler auf! (Empfohlen werden mind. 12 Zeichen!)
  145.    *
  146.    * Die Form wird durch 'mask' bestimmt:
  147.    *
  148.    *   D: Tagesziffer  (d: wird gel”scht, wenn nicht auffllbar)
  149.    *   Y: Jahresziffer (y: wird gel”scht, wenn nicht auffllbar)
  150.    *   M: Monatsziffer (m: wird gel”scht, wenn nicht auffllbar)
  151.    *   G: Monatsbuchstabe Deutsch
  152.    *   F: Monatsbuchstabe Fr„nz”sisch
  153.    *   E: Monatsbuchstabe English
  154.    *   U: Benutzerdefinierter Monatsbuchstabe (s. 'MOSConfig.NameOfMonth')
  155.    *   #E (Hinter Ziffern): s. Bsp. (#G, #F gehen z.Zt. nicht !)
  156.    *
  157.    *   Beispiele fr:                >13.5.1988<          >1.9.2002<
  158.    *   'DD.MM.YY'                ->  '13.05.88'           '01.09.02'
  159.    *   'mm-dd-yy'                ->  '5-13-88'            '9-1-2'
  160.    *   'dd. GGG yyyy'            ->  '13. Mai 1988'       '1. Sep 2002'
  161.    *   'yyyy, d#E of EEEEEEEEE'  ->  '1988, 13th of May'  '2002, 1st of September'
  162.    *   'GGGGGGGGGGGG'            ->  'Mai'                'September'
  163.    *
  164.    * Ist 'mask' ein Leerstring, wird 'DD.MM.YY' verwendet.
  165.    *)
  166.  
  167. PROCEDURE DayToText ( s: Date; REF m0: ARRAY OF CHAR; VAR d: ARRAY OF CHAR );
  168.   (*
  169.    * Wandelt Datum 's' in Wochentagsstring 'd'.
  170.    * 'd' muž mindestens so grož wie die bergebene Maske sein, sonst
  171.    * tritt ein Laufzeitfehler auf! (Empfohlen werden mind. 12 Zeichen!)
  172.    *
  173.    * Die Form wird durch 'mask' bestimmt:
  174.    *
  175.    *   G: Tagesbuchstabe Deutsch
  176.    *   F: Tagesbuchstabe Fr„nz”sisch
  177.    *   E: Tagesbuchstabe English
  178.    *)
  179.  
  180. PROCEDURE FuzzyTime (uhrzeit: Time; REF mask: ARRAY OF CHAR; VAR ftime: ARRAY OF CHAR);
  181. (* Wandelt eine Uhrzeit in einen String mit einer Fuzzy-Uhrzeit um.
  182.  * Von der Maske wird nur das erste Zeichen ausgewertet. 
  183.  * G: Deutsche Fuzzytime
  184.  * E: Englische Fuzzytime
  185.  *)
  186.  
  187. PROCEDURE FuzzyDate (dt: Date; ti: Time; REF mask: ARRAY OF CHAR; VAR str: ARRAY OF CHAR);
  188. (* Wandelt ein Datum und Uhrzeit in einen String mit einem Fuzzydatum um.
  189.  *)
  190.  
  191. PROCEDURE MakeFreeDate (cDt, cTi: CARDINAL; VAR str: ARRAY OF CHAR);
  192. (* Kodiert das bergebene Datum und die bergebene Uhrzeit 
  193.  * Im MausTausch-Format
  194.  * Das Datum und die Uhrzeit wird im GEMDOS-Format bergeben
  195.  *)
  196.  
  197. PROCEDURE MakeDate(VAR str : ARRAY OF CHAR); 
  198. (* Kodiert das aktuelle Datum und die aktuelle Uhrzeit 
  199.  * Im MausTausch-Format
  200.  *)
  201.  
  202. END ConvertDate.
  203.